.\"	$NetBSD: pkg_view.1,v 1.13 2010/01/22 13:30:42 joerg Exp $
.\"
.\" Copyright (c) 2003 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"        This product includes software developed by the NetBSD
.\"        Foundation, Inc. and its contributors.
.\" 4. Neither the name of The NetBSD Foundation nor the names of its
.\"    contributors may be used to endorse or promote products derived
.\"    from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd September 8, 2003
.Dt PKG_VIEW 1
.Os
.Sh NAME
.Nm pkg_view
.Nd add and delete instances of depoted packages in views
.Sh SYNOPSIS
.Nm
.Op Fl nVv
.Op Fl d Ar stowdir
.Op Fl i Ar ignore
.Op Fl k Ar pkg_dbdir
.Op Fl W Ar viewbase
.Op Fl w Ar view
.Ar command
.Ar package ...
.Sh DESCRIPTION
The
.Nm
command is used to add and delete instances of depoted packages in
.Ar stowdir
in a
.Ar view
in the
.Ar viewbase
directory.
.Sh WARNING
.Bf -emphasis
Since the
.Nm
command may execute scripts or programs provided by a package file,
your system may be susceptible to
.Dq Trojan horses
or other subtle
attacks from miscreants who create dangerous package files.
.Pp
You are advised to verify the competence and identity of those who
provide installable package files.
For extra protection, examine all the package control files in the
package database directory
.Pa ( /usr/pkg/packages/\*[Lt]pkg-name\*[Gt]/ ) .
Pay particular attention to any
.Pa +INSTALL
or
.Pa +DEINSTALL
files, and inspect the
.Pa +CONTENTS
file for
.Cm @cwd ,
.Cm @mode
(check for setuid),
.Cm @dirrm ,
.Cm @exec ,
and
.Cm @unexec
directives, and/or use the
.Xr pkg_info 1
command to examine the installed package control files.
.Ef
.Sh OPTIONS
The following command-line options are supported:
.Bl -tag -width indent
.It Fl d Ar stowdir
Set
.Ar stowdir
as the directory in which the depoted packages can be found.
If this option isn't specified, then the
.Ar stowdir
is taken from the value of the environment variable
.Ev DEPOTBASE
if it's set, otherwise the default
.Ar stowdir
is the path to the
.Pa packages
directory under
.Ar viewbase .
.It Fl i Ar ignore
Add
.Ar ignore
to the list of files in
.Ar package
that should ignored when adding or removing the package instance from
.Ar view .
.It Fl k Ar pkg_dbdir
Override the value of the
.Dv PKG_DBDIR
configuration option with the value
.Ar pkg_dbdir .
This is used as as the package database directory for the
default (empty) view.
.It Fl n
Don't actually execute the commands for manipulating the package instances.
.It Fl V
Print the version number and exit.
.It Fl v
Turn on verbose output.
Specifying
.Fl v
multiple times increases the level of verbosity.
.It Fl W Ar viewbase
Set
.Ar viewbase
as the directory in which all the views are managed.
The default
.Ar viewbase
directory is
.Pa /usr/pkg
but may be overridden by the
.Ev LOCALBASE
environment variable.
.It Fl w Ar view
Set
.Ar view
as the directory in
.Ar viewbase
in which the package instances should be added or deleted.
The default
.Ar view
is the empty view but may be overridden by the
.Ev PKG_VIEW
environment variable.
.El
.Pp
The following commands are supported:
.Bl -tag -width indent
.It Cm add
Add the listed package instances into
.Ar view .
.It Cm check
Check whether the listed package instances are present in
.Ar view .
If they are not present, then return 0, otherwise return 1.
.It Cm delete
Delete the listed package instances from
.Ar view .
.El
.Sh ENVIRONMENT
.Bl -tag -width indent
.It Ev DEPOTBASE
This is the location of the
.Ar stowdir
directory inside which all depoted packages are kept.
The default
.Ar stowdir
is the
.Pa packages
directory under
.Ar viewbase .
.It Ev LOCALBASE
This is the location of the
.Ar viewbase
directory in which all the views are managed.
The default
.Ar viewbase
directory is
.Pa /usr/pkg .
.It Ev PKG_DBDIR
If the
.Fl k
flag isn't given, then the value of the environment variable
.Ev PKG_DBDIR
is the package database directory for the default view,
otherwise it defaults to
.Pa /var/db/pkg .
.It Ev PLIST_IGNORE_FILES
This can be used to specify files in
.Ar package
that should ignored when adding or removing the package instance from
.Ar view .
.Ev PLIST_IGNORE_FILES
is a space-separated list of shell glob patterns that match files relative
to the
.Ar package
depot directory, and it defaults to "info/dir *[~#] *.OLD *.orig *,v".
This is overridden by any
.Ev _PLIST_IGNORE_FILES
setting in a package's
.Ar build-info-file
(see
.Xr pkg_create 1 )
if it exists.
.It Ev PKG_VIEW
The default view can be specified in the
.Ev PKG_VIEW
environment variable.
.El
.Sh FILES
.Bl -tag -width indent
.It Pa \*[Lt]pkg-dbdir\*[Gt]/\*[Lt]package\*[Gt]/+INSTALL
If the package contains an
.Ar install
script (see
.Xr pkg_create 1 ) ,
then after the package instance is added into a view, the script is
executed with the following arguments:
.Bl -tag -width package
.It Ar package
The name of the package instance being added.
.It Cm VIEW-INSTALL
Keyword denoting that the script is to perform any actions needed after
the package instance is added to a view.
.El
.Pp
If the
.Ar install
script exits with a non-zero status code, the installation is terminated.
.It Pa \*[Lt]pkg-dbdir\*[Gt]/\*[Lt]package\*[Gt]/+DEINSTALL
If the package contains an
.Ar deinstall
script (see
.Xr pkg_create 1 ) ,
then before the package instance is deleted from a view, the script is
executed with the following arguments:
.Bl -tag -width package
.It Ar package
The name of the package instance being deleted.
.It Cm VIEW-DEINSTALL
Keyword denoting that the script is to perform any actions needed before
the package instance is deleted from a view.
.El
.Pp
If the
.Ar deinstall
script exits with a non-zero status code, the de-installation is terminated.
.El
.Pp
The
.Ar install
and
.Ar deinstall
scripts are called with the environment variable
.Ev PKG_PREFIX
set to the path to the
.Ar view
directory.
.Sh SEE ALSO
.Xr linkfarm 1 ,
.Xr pkg_delete 1
.Sh AUTHORS
The
.Nm
utility was written by
.An Alistair G. Crooks Aq agc@NetBSD.org .
